package org.apache.ibatis.demo.util;

import org.apache.ibatis.cache.CacheKey;
import org.apache.ibatis.reflection.Reflector;
import org.apache.ibatis.reflection.ReflectorFactory;
import org.apache.ibatis.reflection.invoker.Invoker;
import org.apache.ibatis.submitted.basetest.User;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

/**
 * @Date 2021/10/22 21:53
 * @Created mobian
 * @Description
 */
public class ReflUtil {
  public static void main(String[] args) throws InvocationTargetException, IllegalAccessException, InstantiationException {

    Reflector reflector = new Reflector(User.class);


    // 是否有set方法
    System.out.println(reflector.hasSetter("id"));
    // 获取set方法
    System.out.println(reflector.getSetInvoker("id"));
    // 获取set方法的类型
    System.out.println(reflector.getSetterType("id"));

    // 是否有get方法
    System.out.println(reflector.hasGetter("id"));
    // 获取get方法
    System.out.println(reflector.getGetInvoker("id"));
    // 获取get方法的类型
    System.out.println(reflector.getGetterType("id"));

    // 是否有构造方法
    System.out.println(reflector.hasDefaultConstructor());
    // 获取默认构造方法
    System.out.println(reflector.getDefaultConstructor());

    // 获取对象类型
    System.out.println(reflector.getType());
  }
}
